package com.hitangjun.pattern.templatemethod;

public abstract class AbstractClass {

	/**
	 * 模板方法的声明和实现
	 *
	 */
	public void TemplateMethod(){
		//调用基本方法，由子类实现
		doOperation1();
		//调用基本方法，由子类实现
		doOperation2();
		//调用基本方法，已经实现
		doOperation3();
	}

	/**
	 * 基本方法的声明，已经实现
	 *
	 */
	private final void doOperation3() {
		System.out.println("doOperation3");
	}

	/**
	 * 基本方法的声明，由子类实现
	 *
	 */
	protected abstract void doOperation2();

	/**
	 * 基本方法的声明，由子类实现
	 *
	 */
	protected abstract void doOperation1() ;
}
